Many applications (e.g., programs) exhibit phase behavior when the instructions of the application are executed by a processing device (e.g., a processor). As the execution of the application moves between different regions and/or blocks of instructions, the processing device may have different behavioral characteristics. For example, a certain block of instructions may contain unrelated instructions and may allow for multiple instructions to be executed simultaneously. In another example, a certain block of instructions may use certain components of a processing device more often (e.g., may use arithmetic logic units and/or memory registers more often).